http://codeforces.com/problemset/problem/598/D